<?php
require_once "../conexion/conexion.php"; // Conexión a la base de datos

// Configurar la zona horaria correcta
date_default_timezone_set('America/Mexico_City');

if (!isset($_GET['token']) || empty($_GET['token'])) {
    die("Token no proporcionado.");
}

$token = $_GET['token'];

// Buscar el token en la base de datos
$stmt = $conexion->prepare("SELECT id_usuario, fecha_generacion, usado FROM claves_activacion WHERE clave = ?");
$stmt->execute([$token]);
$clave = $stmt->fetch(PDO::FETCH_ASSOC);

if (!$clave) {
    die("Token inválido o ya utilizado.");
}

// Verificar si el token ya fue usado
if ($clave['usado'] == 1) {
    die("El token ya ha sido utilizado.");
}

// Validar si el token aún es válido (24 horas de vigencia)
$hora_generacion = new DateTime($clave['fecha_generacion'], new DateTimeZone('UTC')); 
$hora_generacion->setTimezone(new DateTimeZone('America/Mexico_City'));
$hora_limite = clone $hora_generacion;
$hora_limite->modify('+24 hour');

$ahora = new DateTime('now', new DateTimeZone('America/Mexico_City'));

if ($ahora > $hora_limite) {
    die("El token ha expirado.");
}

// Si el token es válido, mostrar el formulario para cambiar la contraseña
?>

<!DOCTYPE html>
<html lang="es">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Restablecer Contraseña</title>
    <link rel="icon" type="image/x-icon" href="../grifo.png">
     <link href="//netdna.bootstrapcdn.com/bootstrap/3.1.0/css/bootstrap.min.css" rel="stylesheet" id="bootstrap-css">
    <script src="//netdna.bootstrapcdn.com/bootstrap/3.1.0/js/bootstrap.min.js"></script>
    <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
</head>
<body>

<div class="container">
<div class="row">
<div class="col-sm-12">
    <h1>Cambiar Contraseña</h1>
</div>
</div>
<div class="row">
<div class="col-sm-6 col-sm-offset-3">
    <p class="text-center">Utilice el formulario que aparece a continuación para cambiar su contraseña.</p>
    <form id="passwordForm">
        <input type="hidden" name="token" value="<?php echo htmlspecialchars($_GET['token']); ?>">
        <input type="password" class="input-lg form-control" name="password1" id="password1" placeholder="Nueva Contraseña" autocomplete="off">
        <div class="row">
        <div class="col-sm-6">
        <span id="8char" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Maximo 8 caracteres<br>
        <span id="ucase" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Una Letra Mayuscula
        </div>
        <div class="col-sm-6">
        <span id="lcase" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Letras minusculas<br>
        <span id="num" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Utilize un número
        </div>
        </div>    
        <input type="password" class="input-lg form-control" name="password2" id="password2" placeholder="Repetir Contraseña" autocomplete="off">
        <div class="row">
        <div class="col-sm-12">
        <span id="pwmatch" class="glyphicon glyphicon-remove" style="color:#FF0004;"></span> Contraseñas iguales
        </div>
        </div>
        <button type="submit" class="col-xs-12 btn btn-primary btn-load btn-lg">Cambiar Contraseña</button>
    </form>
    <div id="mensaje"></div> <!-- Mensaje de respuesta -->
</div>
</div>
</div>
  <script src="//code.jquery.com/jquery-1.11.1.min.js"></script>
  <script src="../js/reset.js"></script>
<script>
$(document).ready(function(){
    // Validación de contraseña en tiempo real
    $("input[name='password1']").keyup(function(){
        // Validar longitud mínima
        if ($(this).val().length >= 8) {
            $("#8char").removeClass("glyphicon-remove").addClass("glyphicon-ok").css("color","#00A41E");
        } else {
            $("#8char").removeClass("glyphicon-ok").addClass("glyphicon-remove").css("color","#FF0004");
        }
        
        // Validar mayúsculas
        if ($(this).val().match(/[A-Z]/)) {
            $("#ucase").removeClass("glyphicon-remove").addClass("glyphicon-ok").css("color","#00A41E");
        } else {
            $("#ucase").removeClass("glyphicon-ok").addClass("glyphicon-remove").css("color","#FF0004");
        }
        
        // Validar minúsculas
        if ($(this).val().match(/[a-z]/)) {
            $("#lcase").removeClass("glyphicon-remove").addClass("glyphicon-ok").css("color","#00A41E");
        } else {
            $("#lcase").removeClass("glyphicon-ok").addClass("glyphicon-remove").css("color","#FF0004");
        }
        
        // Validar números
        if ($(this).val().match(/\d/)) {
            $("#num").removeClass("glyphicon-remove").addClass("glyphicon-ok").css("color","#00A41E");
        } else {
            $("#num").removeClass("glyphicon-ok").addClass("glyphicon-remove").css("color","#FF0004");
        }
    });

    // Validar que las contraseñas coincidan
    $("input[name='password2']").keyup(function(){
        if ($(this).val() === $("#password1").val()) {
            $("#pwmatch").removeClass("glyphicon-remove").addClass("glyphicon-ok").css("color","#00A41E");
        } else {
            $("#pwmatch").removeClass("glyphicon-ok").addClass("glyphicon-remove").css("color","#FF0004");
        }
    });

    $("#passwordForm").submit(function(event){
        event.preventDefault();
        
        // Validar que todos los criterios se cumplan antes de enviar
        const password1 = $("#password1").val();
        const password2 = $("#password2").val();
        
        if (password1 !== password2) {
            $("#mensaje").html('<div class="alert alert-danger">Las contraseñas no coinciden</div>');
            return;
        }
        
        if (password1.length < 8) {
            $("#mensaje").html('<div class="alert alert-danger">La contraseña debe tener al menos 8 caracteres</div>');
            return;
        }
        
        if (!password1.match(/[A-Z]/) || !password1.match(/[a-z]/) || !password1.match(/\d/)) {
            $("#mensaje").html('<div class="alert alert-danger">La contraseña debe contener mayúsculas, minúsculas y números</div>');
            return;
        }

        // Si todas las validaciones pasan, enviamos la solicitud AJAX
        $.ajax({
            url: "procesar_cambio_contrasena.php",
            type: "POST",
            data: $(this).serialize(),
            dataType: "json",
            success: function(response){
                if(response.status === "success"){
                    $("#mensaje").html('<div class="alert alert-success">' + response.message + '</div>');
                    $("#passwordForm")[0].reset();
                    // Redirigir después de 3 segundos
                    setTimeout(function() {
                        window.location.href = "../index.html";
                    }, 3000);
                } else {
                    $("#mensaje").html('<div class="alert alert-danger">' + response.message + '</div>');
                }
            },
            error: function(xhr, status, error){
                console.error("Error en la solicitud AJAX:", status, error);
                $("#mensaje").html('<div class="alert alert-danger">Error en la solicitud: ' + error + '</div>');
            }
        });
    });
});
    
</script>

</body>
</html>
